При создании COM объекта в папке проекта Вы можете найти RGS файл. Этот файл автоматически генерируется VC++.

Создается в момент создания COM класса для того, что бы в последствии прикомпилироваться к проекту и использоваться для регистрации компонента, и отмены регистрации кстати то же. Вы можете открыть его в блокноте для просмотра вот его содержание
HKCR
{
NoRemove AppID
{
{3A3C4EA2-96DC-11D5-B617-0010B5DAD65E} = s 'NetRunning'
'NetRunning.EXE'
{
val AppID = s {3A3C4EA2-96DC-11D5-B617-0010B5DAD65E}
}
}
}
В него можно вносить изменения которые будут сохранены. HKCR это HKEY_CLASSES_ROOT. Именно сюда будут заноситься записи. А дальше каждая скобка это как ведь в дереве. Странное слово NoRemove означает нечего не удалять при занесении новых записей. При создании COM DLL структура его более сложная:
HKCR
{
TestDll.CCC.1 = s 'CCC Class'
{
CLSID = s '{CE24192E-97D8-11D5-B617-0010B5DAD65E}'
}
TestDll.CCC = s 'CCC Class'
{
CLSID = s '{CE24192E-97D8-11D5-B617-0010B5DAD65E}'
CurVer = s 'TestDll.CCC.1'
}
NoRemove CLSID
{
ForceRemove {CE24192E-97D8-11D5-B617-0010B5DAD65E} = s 'CCC Class'
{
ProgID = s 'TestDll.CCC.1'
VersionIndependentProgID = s 'TestDll.CCC'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
'TypeLib' = s '{CE241921-97D8-11D5-B617-0010B5DAD65E}'
}
}
}
ForceRemove означает все удалять.
Вообщем этот файл с информацией для регистрации. Именно с его помощью Regsvr для DLL или ключ /regserver извлекают информацию в реестр. И вы можете менять этот файл для занесения специфической информации в реестр. Например если DLL будeт использоваться для DCOM.